//package com.tansun.easycare.rule.datamodel.web;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.mvc.support.RedirectAttributes;
//
//import com.tansun.easycare.modules.gen.entity.GenTable;
//import com.tansun.easycare.modules.gen.entity.GenTableColumn;
//import com.tansun.easycare.modules.gen.service.GenTableService;
//import com.tansun.easycare.modules.sys.entity.Dict;
//import com.tansun.easycare.rule.common.JsonMessage;
//import com.tansun.easycare.rule.common.RuleBaseController;
//import com.tansun.easycare.rule.datamodel.entity.RuleDataparams;
//import com.tansun.easycare.rule.datamodel.entity.RuleDataset;
//import com.tansun.easycare.rule.datamodel.service.RuleDataparamsService;
//import com.tansun.easycare.rule.datamodel.service.impl.DataModelServiceImpl;
//import com.tansun.rule.utils.StringUtils;
//
///**
// * 数据模型Action
// * @author Lph
// *
// */
//@Controller
//@RequestMapping(value = "/ruleProj/dbtodatamodel")
//public class DBtoDataModelAction extends RuleBaseController {
//	private static final Logger logger = LoggerFactory.getLogger(DBtoDataModelAction.class);
//	
//	@Autowired
//	private GenTableService genTableService;
//	@Autowired
//	private DataModelServiceImpl dataModelService;
//	@Autowired
//	private RuleDataparamsService attributeService;
//	
//	@RequestMapping(value = "dbform")
//	public String form(GenTable genTable, Model model) {
//		// 获取物理表列表
//		List<GenTable> tableList = genTableService.findTableListFormDb(new GenTable());
//		model.addAttribute("tableList", tableList);
//		// 验证表是否存在
//		if (StringUtils.isBlank(genTable.getId()) && !genTableService.checkTableName(genTable.getName())){
//			genTable.setName("");
//		}else{// 获取物理表字段
//			genTable = genTableService.getTableFormDb(genTable);
//		}
//		model.addAttribute("genTable", genTable);
//		model.addAttribute("javaTypeList", getDataTypeList());
//		return "rule/datamodel/dbgentable/genTableForm";
//	}
//	
//	
//	@RequestMapping(value = "validate")
//	public @ResponseBody JsonMessage validate(GenTable genTable, Model model, RedirectAttributes redirectAttributes) throws Exception {
//		JsonMessage ret = new JsonMessage();
//	    RuleDataset ruleDataset = new RuleDataset();
//        ruleDataset.setProjectcode(this.getCurrProjectCode());
//        ruleDataset.setName(genTable.getClassName());
//        List<RuleDataset> list = this.dataModelService.queryRuleDataList(ruleDataset);
//		if(list==null || list.size()==0){
//			return ret;
//		}
//		RuleDataset dm = list.get(0);
//		String message = "";
//		for(GenTableColumn column : genTable.getColumnList()) {
//			if("1".equals(column.getIsInsert())) {
//		        RuleDataparams ruleDataparams = new RuleDataparams();
//		        ruleDataparams.setDatasetId(dm.getId());
//		        ruleDataparams.setName(column.getName());
//		        List<RuleDataparams> attrList = this.attributeService.findList(ruleDataparams);
//		        if(attrList==null || attrList.size()==0){
//					message += column.getName()+"变量名称重复，请使用其他有效名称";
//					break;
//				}
//			}
//		}
//		if(!StringUtils.isEmpty(message)) {
//			ret.setResult(false);
//			ret.setMessage(message);
//		}
//		return ret;
//	}
//	
//	@RequestMapping(value = "save")
//	public @ResponseBody JsonMessage save(GenTable genTable, Model model, RedirectAttributes redirectAttributes) throws Exception {
//		JsonMessage ret = new JsonMessage();
//		RuleDataset dm = null;
//	    RuleDataset ruleDataset = new RuleDataset();
//        ruleDataset.setProjectcode(this.getCurrProjectCode());
//        ruleDataset.setName(genTable.getClassName());
//        List<RuleDataset> list = this.dataModelService.queryRuleDataList(ruleDataset);
//		if(list!=null && list.size()>0){
//			dm = list.get(0);
//		}else{
//			dm = new RuleDataset();
//			dm.setProjectcode(this.getCurrProjectCode());
//			dm.setChzn(genTable.getComments());
//			dm.setName(genTable.getClassName());
//			dm.setParamType("ALL");
//			dataModelService.save(dm);
//			dm = dataModelService.findList(ruleDataset).get(0);
//		}
//		for(GenTableColumn column : genTable.getColumnList()) {
//			if("1".equals(column.getIsInsert())) {
//		        RuleDataparams attr = new RuleDataparams(column);
//		        attr.setDatasetId(dm.getId());
//		        if("String".equals(attr.getType())) {
//		        	attr.setDefaultValue("null");
//		        }else if("Double".equals(attr.getType()) || "Long".equals(attr.getType())) {
//		        	attr.setDefaultValue("0");
//		        }
//				attributeService.save(attr);
//			}			
//		}
//		return ret;
//	}
//	
//	private List<Dict> getDataTypeList(){
//		List<Dict> dictList = new ArrayList<Dict>();
//		Dict String = new Dict();
//		String.setLabel("String");
//		String.setValue("String");
//		dictList.add(String);
//		
//		Dict Long = new Dict();
//		Long.setLabel("Long");
//		Long.setValue("Long");
//		dictList.add(Long);
//		
//		Dict Double = new Dict();
//		Double.setLabel("Double");
//		Double.setValue("Double");
//		dictList.add(Double);
//		
//		Dict Date = new Dict();
//		Date.setLabel("Date");
//		Date.setValue("Date");
//		dictList.add(Date);
//		
//		Dict Boolean = new Dict();
//		Boolean.setLabel("Boolean");
//		Boolean.setValue("Boolean");
//		dictList.add(Boolean);
//		
//		return dictList;
//	}
//}
